summaryrefslogtreecommitdiff
path: root/src/app/article/category/[categoryName]/page.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/article/category/[categoryName]/page.tsx')
-rw-r--r--src/app/article/category/[categoryName]/page.tsx44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/app/article/category/[categoryName]/page.tsx b/src/app/article/category/[categoryName]/page.tsx
new file mode 100644
index 0000000..3e60a89
--- /dev/null
+++ b/src/app/article/category/[categoryName]/page.tsx
@@ -0,0 +1,44 @@
+import { ArticleLoader } from "../../../../util/articleLoader";
+import { ArticleListElement } from "../../_components/articleListElement";
+type PageType = {
+ searchParams: Record<string, string>,
+ params: {
+ categoryName: string,
+ }
+}
+export async function generateMetadata(context: PageType) {
+ return {
+ title: `アキバ総研アーカイブ:カテゴリ ${decodeURIComponent(context.params.categoryName)}`,
+ }
+}
+export default async function Page(context: PageType) {
+ const al = new ArticleLoader()
+ const nowPageCategoryName = decodeURIComponent(context.params.categoryName);
+ const loadedData = await al.loadData().then(articles => {
+ const filterd = articles.filter(article => {
+ if (article.breadLinks.length == 0) {
+ return false;
+ }
+ const category = article.breadLinks[0];
+ if (category == nowPageCategoryName) {
+ return true;
+ } else {
+ return false;
+ }
+ });
+ return filterd;
+ });
+ return (
+ <div className="p-1 gap-16">
+ <div className="text-center">カテゴリ:{nowPageCategoryName} の記事一覧</div>
+ <div className="text-right">全:{loadedData.length}件</div>
+ {ArticleListElement(loadedData)}
+ </div>
+ );
+}
+export async function generateStaticParams() {
+ const categoryList = await new ArticleLoader().getCategoryList();
+ return categoryList.map((data, index) => {
+ return { categoryName: data.name };
+ });
+}